package Watki;

import Dane.Mp3File;
import Dane.Mp3Tree;
import Dane.Settings;
import java.io.File;

/**
 * Klasa reprezentuje wątek przeszukujący dysk w poszukiwaniu plików mp3
 * @author lukeh
 * @version 1.0
 */
public class Mp3Find implements Runnable
  {

    Settings s;
    /** Uchwyt obiektu z ustawieniami*/
    Mp3Tree t;

    /** Uchwyt drzewa multimediów*/
//Mp3ListRefresher lr;
    /**
     * Konstruktor
     * @param s - obiekt z ustawieniami
     * @param t - uchwyt drzewa
     * @param lr - uchwyt klasy wątku odświerzania drzewa
     */
    public Mp3Find(Settings s, Mp3Tree t, Mp3ListRefresher lr)
        {
        this.s = s;
        this.t = t;
        // this.lr = lr;
        }

    /**
     * Metoda realizująca wątek przeszukiwania
     */
    @Override
    public void run()
        {
        t.cleanTree();
        for (String addr : s.foldery)
            {
            scanDir(addr);

            }
        //  lr.stop();
        System.out.println("Koniec przeszukiwania");
        }

    /**
     * Skanowanie foldeu w poszukiwaniu mp3, rekurencyjnie wgłąb drzewa katalogów
     * @param addr - adres przeszukiwanego katalogu
     */
    private void scanDir(String addr)
        {
        File f = new File(addr);
        String[] pliki = f.list();
        for (String p : pliki)
            {
            File plik = new File(addr + "/" + p);
            if (plik.isDirectory())
                {
                System.out.println("folder!!!!");
                scanDir(plik.getPath());
                } else if (p.endsWith(".mp3"))
                {
                try
                    {
                    Mp3File mp3 = new Mp3File(plik.getAbsolutePath());
                    System.out.println(mp3.Tytul);
                    t.addFile(mp3);
                    } catch (Exception e)
                    {
                    System.out.println("Problem z przetwarzaniem pliku " + addr + "/" + p);
                    }

                }
            }
        t.sortTree();
        t.saveMp3TreeFile();
        }
  }
